
package com.dhcc.bpm.modules.api.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dhcc.bpm.modules.api.entity.Product;
import com.dhcc.bpm.modules.api.vo.OpcAppApiVo;
import com.dhcc.bpm.modules.api.vo.ProdListVo;
import com.dhcc.bpm.modules.api.vo.ProductVO;
import com.dhcc.bpm.modules.api.vo.productListVo;
import com.dhcc.bpm.modules.common.vo.SelectVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName ProductMapper
 * @Description 产品表 Mapper 接口
 * @Author daina
 * @Date 2020/2/25 16:02
 * @Version V1.0
 * @Copyright: 2020 东华软件 . All rights reserved.
 */
public interface ProductMapper extends BaseMapper<Product> {

	/**
	 * @Description 自定义分页
	 * @Author daina
	 * @Date 15:03 2020/2/25
	 * @param page
	 * @param product
	 * @return java.util.List<com.dhcc.bpm.modules.api.vo.ProductVO>
	 **/
	List<ProductVO> selectProductPage(IPage page, ProductVO product);
	List<ProductVO> selectProductApiPage( ProductVO product);
	/**
	 * @Description 分页查询应用产品
	 * @Author daina
	 * @Date 15:03 2020/2/25
	 * @param page
	 * @param product
	 * @return java.util.List<com.dhcc.bpm.modules.api.vo.ProductVO>
	 **/
	List<ProductVO> listAppProductPage(IPage page, ProductVO product);
	/**
	 * @Description 详情
	 * @Author daina
	 * @Date 15:03 2020/2/25
	 * @param product
	 * @return com.dhcc.bpm.modules.api.entity.Product
	 **/
    Product selectDetil(Product product);

    /**
     * @Description 根据产品id查询集合
     * @Author sjm
     * @Date 19:08 2020/2/25 0025
     * @param id
     * @return com.dhcc.bpm.modules.api.entity.Product
     **/
	productListVo selectProductApiList(Long id, @Param("apiIds") String apiIds);

    /**
     * @Description 产品信息集合
     * @Author sjm
     * @Date 19:13 2020/2/26 0026
     * @param id
     * @return java.util.List<com.dhcc.bpm.modules.api.vo.ProdListVo>
     **/
	List<ProdListVo> selectProdList(Long id);

	/**
	 * @Description 根据产品id查询
	 * @Author sjm
	 * @Date 20:06 2020/3/3 0003
	 * @param id
	 * @return com.dhcc.bpm.modules.api.vo.productListVo
	 **/
	productListVo selectUserById(Long id);

	/**
	 * @Description 根据产品id查询
	 * @Author sjm
	 * @Date 10:31 2020/3/4 0004
	 * @param id
	 * @return com.dhcc.bpm.modules.api.vo.productListVo
	 **/
	productListVo selectProById(Long id);

	/**
	 * @Description 根据网关ID查询产品列表
	 * @Date 2020/3/6 10:36
	 * @param page
	 * @param product
	 * @param gatewayId
	 * @return java.util.List<com.dhcc.bpm.modules.api.entity.Product>
	 **/
    List<Product> productListByGatewayId(IPage<Product> page, Product product, String gatewayId);

	/**
	 * @Description 某一系统下产品集合
	 * @Author Mdd
	 * @Date 2020/3/11 11:53
	 * @param sysId 系统主键
	 * @return java.util.List<com.dhcc.bpm.modules.api.entity.Product>
	 **/
	List<Product> sysList(String sysId);

	/**
	 * @Description 查询已发布的产品
	 * @Author sjm
	 * @Date 15:07 2020/3/21 0021
	 * @param page
	 * @param product
	 * @return com.baomidou.mybatisplus.core.metadata.IPage<com.dhcc.bpm.modules.api.vo.ProductVO>
	 **/
    IPage<ProductVO> fetchListRelease(IPage<ProductVO> page, ProductVO product);

    /**
     * @Description 根据所属系统查询集合
     * @Author sjm
     * @Date 18:15 2020/3/28 0028
     * @param opcSysId
     * @return java.util.List<com.dhcc.bpm.modules.api.entity.BaseProduct>
     **/
    List<Product> selectBySysId(Long opcSysId);
    Product selectProductByName(String productName);
	List<ProductVO> selectProductApi(Long productId);
	List<ProductVO> selectProductList(ProductVO productVO);
	String findByProductCode(String productCode);
	productListVo selectById(Long id);

	List<OpcAppApiVo> selectAppApi(Long opcProductId);

	int  updateStsByName(Product product);
	List<ProductVO> selectByProductCode(String productCode);
	List<ProductVO> selectProductBySysId(ProductVO productVO);
	List<ProductVO> selectProductByBaseProduct(ProductVO productVO);

	/**
	 * @Description 查询
	 * @Author daina
	 * @Date 15:49 2020/2/25
	 * @param
	 * @return java.util.List<com.dhcc.bpm.modules.common.vo.SelectVo>
	 **/
	List<SelectVo> selectByProductName();

	List<ProductVO> queryProduct();
}
